Future proofing and prototyping an internet of things network

ABSTRACT

A system and method for representing events that occur in a real world deployment is described. A real-world workload including multiple events is identified. Multiple characteristics of the real-world workload are converted into multiple endpoint simulator workloads. Multiple gateway hardware characteristics are converted into a modeling elements for simulated Internet of things (IoT) networks. Further, a simulation is performed for each of the endpoint simulator workloads on each of the simulated IoT networks. Also, statistics are collected about the performance of the simulated IoT networks for the endpoint simulator workloads.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/887,628, filed Aug. 15, 2022, which is a continuation of U.S. patentapplication Ser. No. 15/638,942, filed Jun. 30, 2017, now Issued U.S.Pat. No. 11,463,526, which claims the benefit of the filing date of U.S.Provisional Patent Application Nos. 62/379,313 and 62/379,339, filedAug. 25, 2016, which are incorporated herein by reference.

TECHNICAL FIELD

The present techniques relate generally to Internet of Things (IoT)devices. More specifically, the present techniques relate to the fieldof IoT data propagation and analysis.

BACKGROUND

A current view of the Internet is as a connection of clients, such aspersonal computers, tablets, smart phones, servers, digitalphoto-frames, and many other types of devices to publicly-accessibledata-centers hosted in server farms. However, this picture represents asmall portion of the overall usage of the globally-connected network. Avery large number of connected resources currently exist, but are notpublicly accessible. Examples include corporate networks, privateorganizational control and monitoring networks spanning the globe, andpeer-to-peer relays designed for anonymity.

It has been estimated that the Internet of Things (IoT) may bring amulti-fold increase in Internet connectivity in just a few years. Fororganizations, IoT devices may provide opportunities for monitoring,tracking, or controlling other devices and items, including further IoTdevices, other home and industrial devices, items in manufacturing andfood production chains, and the like. Further, the emergence of IoTnetworks has served as a catalyst for profound change in the evolutionof the Internet. In the future, the Internet may evolve from aninfrastructure that is oriented toward human utility, to aninfrastructure where humans are minority actors in an Internet ofincreasing numbers of interconnected devices. Accordingly, the Internetmay become a communications system for devices, and networks of devices,to not only communicate with data centers, but with each other. In theIoT, functional networks may be constructed to perform specific tasks,and then de-constructed once the task is completed. Challenges exist inenabling reliable, secure, and identifiable devices to form networks forspecific tasks such as these, and various other types of tasks as may beimplemented in the IoT.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a drawing of an example Internet of Things (IoT) system;

FIG. 2 is a drawing of an example IoT system for a mesh network of IoTdevices;

FIG. 3 is diagram of an example IoT system for rapid prototyping;

FIG. 4 is a block flow diagram of an example method for rapidprototyping in an IoT system;

FIG. 5 is a block flow diagram of an example method for rapidprototyping in an IoT system;

FIG. 6 is block flow diagram an example method for future proofing anIoT system;

FIG. 7 is diagram an example IoT device for future proofing and rapidprototyping;

FIG. 8 is a block diagram of a non-transitory, machine readable mediumincluding code to direct a processor to perform rapid prototyping in anIoT system; and

FIG. 9 is a block diagram of a non-transitory, machine readable mediumincluding code to direct a processor to future proof the IoT system.

DESCRIPTION OF THE EMBODIMENTS

The Internet of things (IoT) is a concept in which a large number ofcomputing devices are interconnected to each other and to the Internetto provide functionality and data acquisition at very low levels. Asused herein, an IoT device may include a semi-autonomous deviceperforming a function. The function may include sensing or control,among others. The IoT device may communicate with other IoT devices anda wider network, such as the Internet. Example networks of IoT devicesmay include commercial and home automation devices, such as waterdistribution systems, electric power distribution systems, pipelinecontrol systems, plant control systems, light switches, thermostats,locks, cameras, alarms, motion sensors, and the like. The IoT devicesmay be accessible through remote computers, servers, and other systems,to control systems or access data. Other IoT devices may include IoTgateways, which are used to couple IoT devices to other IoT devices, andto cloud applications. Cloud applications may include services, forexample, such as data storage, process control, and the like.

The future growth of the Internet may include very large numbers of IoTdevices, each with their own respective standards and configurations.Accordingly, as described herein, a number of innovations for the futureInternet address the need for all these layers to grow unhindered, todiscover and make accessible connected resources, and to support theability to hide and compartmentalize connected resources. Any number ofnetwork protocols and communications standards may be used, wherein eachprotocol and standard is designed to address specific objectives.Further, the protocols are part of the fabric supporting humanaccessible services that operate regardless of location, time or space.The innovations include service delivery and associated infrastructure,such as hardware and software. The services may be provided inaccordance with the Quality of Service (QoS) terms specified in servicelevel and service delivery agreements.

Future innovations in the IoT may implicate new architectures thatincorporate such innovations. Examples may rapidly prototype differentpotential configurations that can be future proofed by determining whichconfigurations are efficient, cost-effective, and the like. Prototypingfor an IoT network involves generating workloads on an IoT network thatresemble real-world scenarios. Further, prototyping includes capturingthese workloads in end-to-end IoT use case definitions and testing theuse cases on an IoT network. Workloads are collections of workflows,which are series of events that take place on an IoT network. Theend-to-end IoT use case definitions are thus characterized by workflowsthat exercise a number of software events and interrupts of varyingpriorities and dependencies. However, attempting to test workflows withreal-world events in a real-world IoT network would be time consumingand expensive, thereby contributing to prototyping delays and renderingmany potential prototype evaluations infeasible.

In current systems, prototyping may be carried out by evaluatingcharacteristics of a small subset of real world clients and triggersthat are not representative of real world workloads, which constitutemultiple parallel triggers, thereby resulting in inaccurate and largelyinsufficient data points to carry out concept evaluations. Conceptevaluations are methods for determining the feasibility of a newconcept, such as a new gateway for an IoT network.

An IoT statistic characterization process that determines workloadimpact for current and estimated future workloads uses an IoT rapidprototyping engine. The IoT rapid prototyping engine enables theevaluation of statistic characteristics using accurate representationsof real world client and triggers via simulated end point clients andexternal triggers. Further, embodiments of the claimed subject matterenable complex workflow and statistic characteristics analysis, therebyproviding rapid prototyping capabilities.

Workloads are simulated incrementally from simple representations toscaled-up complex inputs on modelled edge gateway architectures, withthe resulting statistic characteristics documented for offlineevaluation. The outlined embodiments describe the evaluation ofsimulating the workflows on the modelled gateways and the resultingstatistic characteristics. Statistic characterization represents anevaluation on a specific statistic that is to be tracked duringsimulation. For example, the RAM capacity, CPU use, buffer sizes, howmany full buffers, round-trip latency, hop-to-hop latency, are someexample statistics that may be tracked for the simulation of theprototype on a simulated IoT network.

FIG. 1 is an example Internet of Things (IoT) system 100. The system 100includes a cloud 102, servers 104, multiple IoT devices 106, 108, 110,112, 114, 116, 118, a group 120 of IoT devices, and a gateway 122. Thecloud 102 may represent the Internet, or may be a local area network(LAN) or a wide area network (WAN), such as a proprietary network for acompany. The server 104, various IoT devices 106, 108, 110, 112, 114,116, 118, and gateway 122, may be real, virtual, or simulated. Indeed,the representations in FIG. 1 may be real or simulated with respect totheir depiction and in evaluation, including in any hybrid operation ofthe live real IoT components with simulated or emulated components.

The network topology may include various types of IoT networks, such asa mesh network via Bluetooth® low energy (BLE) links. Other types of IoTnetworks may include a wireless local area network (WLAN) network tocommunicate with IoT devices through IEEE 802.11 (Wi-Fi®) links, acellular network to communicate with IoT devices through an LTE/LTE-A(4G) or 5G cellular network, and a low-power, wide area (LPWA) network.A LPWA network may be compatible with the long range wide area network(LoRaWAN™) specification promulgated by the LoRa alliance. The networktopology or IoT network(s) may include IPv6 over Low Power Wide-AreaNetworks (LPWAN) network compatible with a specification promulgated bythe Internet Engineering Task Force (IETF). Further, the respective IoTnetworks may communicate with an outside network provider (e.g., a tier2 or tier 3 provider) via a variety of communications links, such as anLTE cellular link, an LPWA link, or a link based on the IEEE 802.15.4standard, such as Zigbee®, and so on. The respective IoT networks mayalso operate by network and internet application protocols such asConstrained Application Protocol (CoAP). The respective IoT networks mayalso be integrated with coordinator devices that provide a chain oflinks that forms cluster tree of linked devices and networks.

Although wireless networks and wired networks are described, such asLPWA links, optical links, and the like, it may be noted that any typeof network may be used to couple the devices to each other or to agateway 122. A network or assembled group of devices may have both wiredand wireless connections, and may use both simultaneously between nodes,peers, and gateway devices. Further the network or assembled group ofdevices may use wired networks, wireless networks, or both, tocommunicate with the cloud, and any higher performance computing devicesthat may be participating to deliver services or support to what isdisclosed herein. Thus, any IoT link 108 or IoT network 112 may use awired or wireless connection. Further, IoT devices may be in directcommunications with other devices in the cloud 102 without the use of agateway 122. The backbone links 108 may include various wired orwireless technologies, including optical networks and, again, may bepart of a LAN, a WAN, or the Internet. Additionally, such communicationlinks facilitate optical signal paths among both IoT devices with thecloud 102 and the gateway(s) 110, including the use of MUXing/deMUXingcomponents that facilitate interconnection of the various devices.

As can be seen from FIG. 1 , a large number of IoT devices may becommunicating through the cloud 102. These IoT devices may be grouped incombinations to perform a common function, such as IoT devices forremote weather stations 106, local information terminals 108, alarmsystems 110, automated teller machines 112, alarm panels 114, or movingvehicles, such as emergency vehicles 116 or drones 118, among manyothers. Each of these IoT devices may be in communication with other IoTdevices, with servers 104, or both. The IoT devices 106, 108, 110, 112,114, 116, 118 may include any number of different types of sensors,computing devices, and the like. The servers 104 may be one or morecomputing devices that provides a service for, or communicates in someother capacity with one or more IoT devices 106, 108, 110, 112, 114,116, 118 and group 120. Moreover, in profiling and diagnostics, theservers 104 and the various IoT devices 106, 108, 110, 112, 114, 116,118 may be real, virtual, or simulated.

In one example, the group 120 is a traffic control group that includesIoT devices along streets in a city. These IoT devices may includestoplights, traffic flow monitors, cameras, weather sensors, and thelike. The IoT devices in the traffic control group may use anotherdevice, such as the gateway 122 to communicate with the cloud 102. Thetraffic control group, or other subgroups, may be in communication withthe cloud 102 through wireless links 124, such as LPWA links, and thelike. Further, a wired or wireless sub-network 126 may allow the IoTdevices to communicate with each other, such as through a local areanetwork, wireless local area network, and the like. In some examples,the sub-network 126 may couple one or more of the IoT devices to thegateway 122 using a wired network. Additionally, the IoT devices of thegroup 120 may also use one or more servers (not shown) operationallydisposed along the gateway 122, or between the group 120 and the gateway122, to facilitate communication of the group 120 with the cloud 102 orwith the gateway 122. For example, the one or more servers may operateas an intermediate network node to support a local edge cloud or fogimplementation among a local area network.

This may allow different IoT devices to request or provide informationto other devices autonomously. For example, the traffic group 120 mayrequest a current weather forecast from a group of remote weatherstations 106, which may provide the forecast without human intervention.Further, an emergency vehicle 116 may be alerted by an automated tellermachine 112 that a burglary is in progress. As the emergency vehicle 116proceeds towards the automated teller machine 112, it may access thetraffic group 120 to request clearance to the location, for example, bylights turning red to block cross traffic at an intersection insufficient time for the emergency vehicle 116 to have unimpeded accessto the intersection.

Clusters of IoT devices, such as the remote weather stations 106 or thetraffic control group, may be equipped to communicate with other IoTdevices as well as with the cloud 102. Moreover, in profiling anddiagnostics, the weather stations 106 and the various IoT devices 108,110, 112, 114, 116, 118 may be real, virtual, or simulated. This mayallow the IoT devices to form an ad-hoc network or virtual networkbetween the devices, allowing them to function as a single device, whichmay be termed a fog device. The fog device is discussed further withrespect to FIG. 2 .

FIG. 2 is an example IoT system 200 for a mesh network of IoT devices(fog device 202). In embodiments, the fog device 202 operates at theedge of the cloud 102. As used herein, the fog device 202 is a clusterof devices that may be grouped to perform a specific function, such astraffic control, weather control, plant control, home monitoring, andthe like.

Although the fog device 202 is shown as a mesh network in this example,using gateways, such as gateway 122 to communicate with devices in thecloud 102, the devices do not have to be part of a mesh network, or evenproximate to each other to form a fog device. Thus, the devices do nothave to be in direct radio or network communications with each other, orproximate to each other, but may form an ad hoc group based on function.The formation of the fog device 202 may be as simple as sharing naming,type, and identification information, for example, group identitycredentials, between the different devices forming the fog device. Thismay allow any device to act as a representative of the fog device 202,with providing identity specific to the device. As an example, althoughthe fog device 202 is this example is shown as being made up of devicesin a single location, fog devices can include devices in multiplelocations, formed to provide specific services. For example, the fogdevice 202 may include remote weather stations located in the cloud 102.Further, a server 104 located in a data center may be included in thefog device 102 for data analysis, and other services. Moreover, inprofiling and diagnostics, the cloud 102, server 104, fog device 202 andthe various remote weather stations, may be real, virtual, or simulated.

In another example, the fog device 202 is a group of IoT devices forregulating traffic at an intersection. The fog device 202 may beestablished in accordance with specifications released by the OpenFogConsortium (OFC), among others. These specifications allow the formationof a hierarchy of computing elements between the gateways 122 couplingthe fog device 202 to the cloud 102 and endpoint devices, such astraffic lights 204 and data aggregators 206 in this example. The fogdevice 202 can leverage the combined processing and network resourcesthat the collective of IoT devices provides.

Traffic flow through the intersection may be controlled by a pluralityof traffic lights 204 (e.g., three traffic lights 204). Analysis of thetraffic flow and control schemes for traffic may be implemented byaggregators 206 that are in communication with the traffic lights 204and each other through a mesh network. Data may be uploaded to the cloud102, and commands may be received from the cloud 102, through gateways122 that are in communication with the traffic lights 204 and theaggregators 206 through the mesh network. In some aspects, the fogdevice 202 can include temporary IoT devices. In other words, not all ofthe IoT devices in the mesh network may be permanent members of the fogdevice 202. In the example IoT system 200, three transient IoT deviceshave joined the fog device 202, a first vehicle 212, a second vehicle214, and a pedestrian 216. In these cases, the IoT device may be builtinto the vehicles 212 and 214, or may be an App on a cell phone carriedby the pedestrian 216. Moreover, in profiling and diagnostics, the cloud102, server 104, gateways 122, fog device 202, traffic lights 204,aggregators 206, vehicles 212, 214, pedestrians 214, and the like, maybe real, virtual, or simulated.

The fog device 202 may be considered to be an interconnected networkwherein a number of IoT devices are in communications with each other,for example, by the communication links 208 and 210, through the cloud102 via a network communications link, or through a gateway 122. Fordevices proximate to one another, the network may be established usingthe open interconnect consortium (OIC) standard specification 1.0released by the Open Connectivity Foundation™ (OCF) on Dec. 23, 2015.This standard allows devices to discover each other and establishcommunications for interconnects. Other interconnection protocols mayalso be used, including, for example, the optimized link state routing(OLSR) Protocol, or the better approach to mobile ad-hoc networking(B.A.T.M.A.N.), among many others. Any number of communications linksmay be used in the fog device 202. Shorter-range links 208, for example,compatible with IEEE 802.15.4 may provide local communications betweenIoT devices that are proximate to the intersection. Longer-range links210, for example, compatible with LPWA standards, may providecommunications between the IoT devices and the gateways 122. To simplifythe diagram, not every communications link 208 or 210 is labeled with areference number. Further, not every device that participates in the fogdevice 202 needs to be located proximate to the other devices or indirect radio communications. For example, the fog device 202 mayincorporate a weather station located on a different network.

One or more of the communications links 208 and 210 may be replaced witha wired connection between two devices. The network forming the fogdevice 202 does not have to be a mesh network, but may be a standardnetwork in which each device is coupled to other devices through a wiredor wireless connection to the gateway 122.

In some aspects, communications from any IoT device 204, 206, 212, 214,216 may be passed along the most convenient path between any of the IoTdevices 204, 206, 212, 214, 216 to reach the gateways 122, for example,the path having the fewest number of intermediate hops, or the highestbandwidth, among others. In mesh networks, the number ofinterconnections provides substantial redundancy, allowingcommunications to be maintained, even with the loss of a number of IoTdevices.

The fog device 202 of the devices may be presented to clients in thecloud 102, such as the server 104, as a single device located at theedge of the cloud 102. In this example, the control communications tospecific resources in the fog device 202 may occur without identifyingany specific IoT device within the fog device 202. Accordingly, if anIoT device fails, other IoT devices may be able to discover and controla resource. For example, the traffic lights 204 may be wired so as toallow any one of the traffic lights 204 to control lights for the othertraffic lights 204.

In some examples, the IoT devices 204, 206, 212, 214, 216 may beconfigured using an imperative programming style, e.g., with each IoTdevice having a specific function and specific communication partners.However, in some embodiments, the IoT devices 204, 206, 212, 214, 216forming the fog device 202 may be configured in a declarativeprogramming style, allowing the IoT devices 204, 206, 212, 214, 216 toreconfigure their operations and communications, such as to determineneeded resources in response to conditions, queries, device failures,and the like. For example, as transient IoT devices, such as thevehicles 212, 214 and the pedestrian 216, join the fog device 202, thefog device 202 may modify the operation of the fog device 202. In oneexample, a temporary group including the vehicles 212, 214 and thepedestrian 216 may be formed. The temporary group may modify theoperation of the traffic lights 204 so the pedestrian 216 has sufficienttime to cross the intersection. To address safety concerns, if one orboth of the vehicles 212, 214 are autonomous, the temporary group maymodify the operation of any autonomous vehicles to slow down prior toarriving at the intersection. Further, as the transient devices 212,214, 216, leave the vicinity of the intersection, the fog device 202 mayreconfigure itself to eliminate the IoT devices 212, 214, 216 from thenetwork. As other transient IoT devices approach the intersection, thefog device 202 may reconfigure itself to include those devices, and soon.

Embodiments of a traffic system in the IoT, such as the IoT system 200,may have other types of configurations as well. For example, the fogdevice 202 may include the traffic lights 204 for a number ofintersections, such as along a street, along with all of the transientIoT devices along the street. The fog device 202 may then divide itselfinto functional units, such as the traffic lights 204 and other IoTdevices proximate to a single intersection. This type of combination mayenable the formation of larger IoT constructs in the fog device 202.Hence, if an emergency vehicle joins the fog device 202, an emergencyconstruct, or virtual device, may be created that includes all of thetraffic lights 204 for the street, allowing control of the traffic flowpatterns for the entire street. The emergency construct may instruct thetraffic lights 204 along the street to stay red for opposing traffic,and green for the emergency vehicle, expediting the passage of theemergency vehicle.

IoT systems such as, the IoT system 200, may be complex and hence, mayprovide a number of challenges in their implementations. For example,IoT systems may include numerous types of devices, communication links,protocols, and the like, which may be configured in a number ofdifferent potential implementations. Thus, determining whatconfigurations are available, and which of those configurationsaccommodate the IoT system requirements may be challenging. Accordingly,certain embodiments provide for a system to perform simulations ofpotential IoT systems (prototypes), on the IoT system itself.

For instance, simulation code may be stored and executed on the fogdevice 202, or on other devices in an IoT system, such as the dataaggregators 206 of the fog device 202. The simulation may performvarious simulated configurations of an IoT system. Simulations mayinclude different workloads on the existing IoT architecture givingresulting statistic characteristics. In some examples, the simulationsystem disposed in the IoT system may iterate through simulatedincremental values of workload values, architecture or gateway values,and observed statistic characteristics values. In particular examples,the simulations may provide for reconfiguring a fog device 202, forexample, by modelling a change in which IoT devices are used to provideparticular functions.

Moreover, an IoT simulation system may be installed and executed on anexisting fog device 202, or on other devices in an IoT system. Theinstallation of the IoT simulation system may allow for the creation ofa virtual IoT device that includes both virtual and real IoT devices.The virtual and real IoT devices thus represent a hybrid systemarchitecture, where simulation of a proposed future architecture and alive architecture run at the same time on the same virtual machine. Thevirtual IoT device may allow for testing different configurations of IoTdevices, for example, before adding additional IoT devices to a fogdevice 202 or reconfiguring communications in a fog device 202. The testresults may represent functionality, stability, and the like, as theconfiguration changes. Moreover, in profiling and diagnostics, the cloud102, server 104, gateways 122, fog device 202, traffic lights 204,aggregators 206, and the like, may be real, virtual, or simulated.Furthermore, components shown in FIG. 2 , such as the gateway, fogdevice, and various sensors or servers, may be real, virtual, orsimulated. Indeed, the representations in FIG. 2 may be real orsimulated with respect to their depiction and in evaluation, includingin any hybrid operation of the live real IoT components with simulatedor emulated components.

Indeed, the simulations for evaluating evaluating or detecting anomaliesmay run and operate in an environment where both live IoT systems andthe simulation/emulation are running together to consider, for example,an expansion of an IoT system by testing the proposed architecture.Thus, embodiments may include a hybrid of live and simulated/emulatedsystems. This hybrid set-up may accommodate opportunity to test, forexample, system capacity and fault recovery scenarios.

FIG. 3 is an example IoT system 300 for rapid prototyping. The system300 includes a control user interface (UI) 302 (installed on a computingdevice 304), an automation framework 306 and end point simulators 308(also installed on computing device 304), real and simulated gateways310 (simulated gateways installed on computing device 304), and thecloud 312. Moreover, in profiling and diagnostics, the IoT system 300,control UI 302, computing device 304, automation framework 306, endpointsimulators 308, gateways 310, and the cloud 312 may be real, virtual, orsimulated.

The control UI 302 may be used to create a simulated IoT system on whichto execute the workloads. The simulated IoT network is defined usingconfiguration parameters such as the number of sensors, sensor publishfrequencies, packet sizes, burstiness of the traffic profiles, qualityof service (QoS) values of merge queueing telemetry transport (MQTT)based transmissions, are a few examples of parameters to define asimulated IoT network. The control UI 302 has the ability to dynamicallymodify runtime parameters, which gives the edge infrastructure theability to accurately represent real world scenarios. Dynamicallymodifying runtime parameters means using the control UI 302 to take anevent generated by the end point simulators 308, and changing the sensedvalue. Modifications can happen during run time execution of thesimulated model. The control UI 302 initiates monitoring daemons in eachof the devices the control UI 302 controls, e.g., the simulated sensorsand sensor hubs, the gateways 310, and servers in the cloud 312. Themonitoring daemons track the statistics used to characterize a prototypesimulation. In one embodiment, monitoring daemons can be run on thecloud 312 to monitor the receipt of sensed values, the subsequentanalysis, and actuation.

The end point simulators 308 generate events for the simulated workloadbased on models of the different types of events that occur. The type ofevent generated depends on what the components of the simulated IoTnetwork do. One example of an event is when any of the sensors transmitsa measurement or other sensed value via Bluetooth to an aggregator.Another example event is the number of transient devices expected tojoin or leave the mesh network per unit of time. The end pointsimulators 308 include models for various types of communicationprotocols used by sensors in an IoT network. The values may bedetermined randomly.

The automation framework 306 is used to perform the simulation ofprocessing the workload in the simulated IoT network. In one embodiment,the automation framework 306 inputs events generated by the end pointsimulators 308 to a simulated IoT network. More specifically, theautomation framework 306 issues control sequences to end point devices,real and simulated, via the control UI 302. During a learning phasewhere the event models are built, the control sequences to the endpoints are issued for the purposes of learning the resultant statisticcharacteristics. During the run phase, the end point simulators 308 arecontrolled for the purpose of predicting expected statisticcharacteristics. The edge infrastructure provides API's for cannedtrigger scripts to interact. The set of API's exchange a standard set oftiming information that allows the trigger scripts to identifysynchronous versus staggered starts. These scripts may be storedanywhere in the edge infrastructure, or even the cloud 312. However,storing the scripts closest to the edge is more efficient than at thegateways 310 and the cloud 312.

The real and simulated gateways 310 are used for different purposes. Thereal gateways are used to collect statistic characteristics informationduring the learning phase of the model building. The data is then usedto build the simulated IoT network, i.e., the simulation model, whereingateways 310 and end points are simulated entities. The simulatedgateways process the events generated by the end point simulators 308,and pass the sensor information to the cloud 312. Once the simulation isexecuted, the statistics tracked by the monitoring daemons are stored inan IOT database.

The IoT database is an integrated database that stores workflowconfiguration parameters, results logging, and enables binary searchesand pruning based on results from prior runs. Interactions with thedatabase are controlled via the control UI 302. This arrangement allowsfor the security and integrity of the stored data. Allowing the databasevalues to only be controlled via the control UI 302 allows for fewerentry points and a single point to protect against threats, such asmalicious users, viruses, etc. Workflow configuration information,observed system performance, and the resulting statistic characteristicsare stored in each tuple in the IoT database. In this way, the IoTdatabase may enable the building of functions that extrapolate statisticcharacteristics and system performance for a range of incrementalworkload parameters, which may give the edge architecture the capabilityof being able to run thousands of permutations to identify the mostoptimal hardware or application what-if scenarios. Extrapolations oftenrefer to linear models, but that may not be the case. The expectedstatistic characteristics could also be step functions as determined bythe nature of the architecture of the simulated IoT network.Additionally, the IoT database may be stored anywhere in the edgeinfrastructure, but is more efficiently maintained and used if stored onthe gateway 310 or another aggregation device.

In these ways, the system 300 may enable optimal statistic size IoTdeployments using an edge infrastructure with simulated end points(sensors), real and simulated aggregation devices (e.g., gateways 310,sensor hubs), the control UI 302, automation framework 306, and the IoTdatabase. The IoT database can reside anywhere in the edgeinfrastructure. However, placing the IoT database on the gateway 310results in faster lookups than if placed on other parts of the edgeinfrastructure. Moreover, in profiling and diagnostics, the IoT system300, control UI 302, computing device 304, automation framework 306,endpoint simulators 308, gateways 310, and the cloud 312 may be real,virtual, or simulated.

Lastly, all of the devices depicted in the IoT system 300 of FIG. 3 canrepresent physical devices that are existing and real. However, any ofthe devices depicted in the IoT system 300 of FIG. 3 could be virtual orsimulated. Indeed, the architectural elements disclosed herein such asIoT objects, network entities, servers, gateways or other nodes can beeither real, virtual, or simulated. There may be an interchangeabilityof real, virtual, and simulated with respect to the depictions andrepresentations of IoT system devices in the present specification anddrawings. Moreover, the simulations for evaluating and detectinganomalies may run and operate in an environment where both live IoTsystems and the simulation/emulation are running together to consider,for example, an expansion of an IoT system by testing the proposedarchitecture. Thus, embodiments may include a hybrid of live andsimulated/emulated systems. This hybrid set-up may accommodateopportunity to test, for instance, system capacity and fault recoveryscenarios. Moreover, the proposed expansion for an architecture mayinvolve already-installed or existing devices outside of the IoT systemto which the IoT system will incorporate or tie into, or can involve newIoT devices to be installed, and so on.

FIG. 4 is an example method 400 for rapid prototyping in an IoT system.The method 400 begins at block 402, and is performed by the automationframework 306. At block 404, workload characteristics are converted intoend point simulation workloads (W_(i . . . m)). Each workload is asimulated representation of an actual workload as would be representedin a real world deployment scenario, the aggregated load whichrepresents the workflow in its entirety. At block 406, gateway hardwarecharacteristics are converted into modeling elements (G_(i . . . n)).Each of the relevant components and their interactions are representedwithin the model thereby characterizing the behavior of the actualsystem during workflow executions. At block 408, the simulation isperformed for each workload, and gateway modeling elements. The trackedstatistics for the simulation are recorded in Si. At block 410, it isdetermined if simulations have been run for all workloads and gatewayconfigurations. If there are more, the next simulation is run at block408. If there are no more, the method 400 stops at block 412. Moreover,in profiling and diagnostics, the IoT system, automation framework 306,endpoint simulation workloads, gateway modeling elements, and the likemay be real, virtual, or simulated.

FIG. 5 is an example method 500 for rapid prototyping in an IoT system.As stated previously, in profiling and diagnostics, the IoT system,automation framework, endpoint simulation workloads, gateway modelingelements, and the like may be real, virtual, or simulated. This mayenable future proofing of rapid prototypes by varying workflows andgateway configurations, for example. However, some variations in theworkflows and gateway configurations, do not create a great deal ofvariation in the statistics resulting from the simulation. In suchcases, embodiments of the claimed subject matter may automaticallyeliminate similar workflows or gateway configurations from the executedsimulations. The method 500 is performed for each simulation.Additionally, the method 500 begins at block 502, and is performed bythe automation framework 306. At block 504, a simulation result isidentified. At block, 506, it is determined whether the statistic, Siexceeds a specified threshold of variation. If so, the method 500 flowsto block 510, then returns to block 504 to identify the next simulation.However, if the statistic, Si does not exceed the specified threshold ofvariation, at block 508, the respective workflow and gateway entries areremoved from the potential simulations. The method 500 ends at block512.

Workflow iterations as described in the illustration in FIG. 5 ,identify a workload consisting of workflows (W_(iw), iw=1 . . . n) andGateway characteristics (G_(ig), ig=1 . . . n). Observed statisticcharacteristics (Si) are measured against the previous runs. An absenceof a variation, which may be a configurable parameter, would eliminatefurther increments in the workflow suite for the rest of the workflowsequence therefore eliminating a series of workloads from thesimulations.

IoT applications are in their early years of development, which obscuresthe ability to perform accurate headroom analysis applications deployedin an IoT network. In current systems, when attempts are made to performheadroom analysis, they are based on linear extrapolations of currentusage, which results in inaccurate representations of the workings ofthe target IoT network.

The target IoT network may also refer to the hardware architecture, suchas the system deployment, the target gateway including CPU, memory, andstorage specifications, and also to whether the gateway architecture isreal, virtual, a hybrid of real and virtual, and so on. The target IoTnetwork thus provides a background against which the characteristics ofan observed IoT system are evaluated for a given gateway architecture.The “proposed solution” may be the contemplated or simulated observedcharacteristic(s), or potential response of a given architecture for aconsidered workload, and other features or representations, and so on.

Accordingly, future proofing IoT architectures is now made possible byperforming headroom analysis of simulations of target workflows executedon modelled gateways, as described with respect to FIGS. 3-5 . Targetworkflows may be approximations of the workload expected in futureproofing scenarios. Embodiments of the clamed subject matter can beextended to contexts, such as processing utilization, memory, storage,and I/O's, within edge sensor modules, sensor hubs, and on data serverswithin the cloud. In embodiments, an IoT architecture characterizationprocess evaluates a proposed architecture against the requirements offuture workflows.

Future target workflows are simulated and extended on current and futuresimulated edge gateway models. Estimated metrics for the simulations areevaluated for optimal returns against pre-defined set of technicalgoals. The outlined embodiments describe the evaluation of the executedsimulated future workflows on the modelled gateways and its lookupagainst quantified targeted technical solution characteristics by meansof an integrated lookup table.

Furthermore, components such as the gateway and various sensors orservers, may be real, virtual, or simulated. Indeed, the representationsdescribed with respect to FIG. 5 may be real or simulated with respectto their depiction and in evaluation, including in any hybrid operationof the live real IoT components with simulated or emulated components.

IoT applications may be poised to integrate a growth of new andincreasingly complex applications in the years to come. In order toaccommodate this growth and prevent expensive overhauls of deployed IoTarchitectures, headroom analysis of future deployment scenarios isuseful. Headroom analysis is a way to identify how much capacity isremaining for a specific resource before a bottleneck occurs.Accordingly, embodiments of the claimed subject matter iterate throughnumerous workflow permutations with the ability to determine theimplications of potential future: changes to the workload, and upgradesto the gateway architecture of the IoT network. Such an embodimentenables complex what-if analysis capabilities that help identifypotential future infrastructure bottlenecks and the impact on them frompossible proposed upgrades, thereby providing insights that helpdetermine the optimal target solution architecture that accommodates theworkload and gateway architecture changes. In this way, embodiments ofthe claimed subject matter obviate potentially expensive overhauls ofexisting IoT network infrastructure.

FIG. 6 is an example method 600 for future proofing an IoT system. Themethod 600 determines a proposed future workload is compliant relativeto the desired technical goals, and is performed by the automationframework 306. The method 600 begins at block 602. At block 604, theautomation framework 306 helps define technical requirements based ontarget future workloads. At block 606, a simulation is executed for agiven workflow and gateway configuration. At block 608, the automationframework evaluates the simulation, and determines the architecture andworkflow characteristics against the modelled gateway architecture, andcompares these architecture characteristics against the devices' desiredtechnical architecture and workflow-level metrics by performing a lookupto the IoT database. Each workflow permutation is exercised in thismanner using an iteration generator until all target input workflowshave been exhausted. All deviations outside of the target architectureparameters are flagged as non-compliant and marked for furtherevaluations. Furthermore, components such as the gateway and varioussensors or servers, may be real, virtual, or simulated. Indeed, therepresentations described with respect to FIG. 5 may be real orsimulated with respect to their depiction and in evaluation, includingin any hybrid operation of the live real IoT components with simulatedor emulated components.

FIG. 7 is an example IoT system 700 for future proofing and rapidprototyping. The IoT system 700 may include any combinations of thecomponents shown in the example. The components may be implemented asICs, portions thereof, discrete electronic devices, or other modules,logic, hardware, software, firmware, or a combination thereof adapted inthe IoT system 700, or as components otherwise incorporated within achassis of a larger system. The block diagram of FIG. 7 is intended toshow a high level view of components of the IoT system 700. However,some of the components shown may be omitted, additional components maybe present, and different arrangement of the components shown may occurin other implementations.

The IoT system 700 may include a processor 702, which may be amicroprocessor, a multi-core processor, a multithreaded processor, anultra-low voltage processor, an embedded processor, or other knownprocessing element. The processor 702 may be a part of a system on achip (SoC) in which the processor 702 and other components are formedinto a single integrated circuit, or a single package, such as theEdison™ or Galileo™ SoC boards from Intel. As an example, the processor702 may include an Intel® Architecture Core™ based processor, such as aQuark™, an Atom™, an i3, an i5, an i7, or an MCU-class processor, oranother such processor available from Intel® Corporation, Santa Clara,CA. However, any number other processors may be used, such as availablefrom Advanced Micro Devices, Inc. (AMD) of Sunnyvale, CA, a MIPS-baseddesign from MIPS Technologies, Inc. of Sunnyvale, CA, an ARM-baseddesign licensed from ARM Holdings, Ltd. or customer thereof, or theirlicensees or adopters. The processors may include units such as an A5-A9processor from Apple® Inc., a Snapdragon™ processor from Qualcomm®Technologies, Inc., or an OMAP™ processor from Texas Instruments, Inc.

The processor 702 may communicate with a system memory 704 over a bus706. Any number of memory devices may be used to provide for a givenamount of system memory. As examples, the memory can be random accessmemory (RAM) in accordance with a Joint Electron Devices EngineeringCouncil (JEDEC) low power double data rate (LPDDR)-based design such asthe current LPDDR2 standard according to JEDEC JESD 209-2E (publishedApril 2009), or a next generation LPDDR standard, such as LPDDR3 orLPDDR4 that will offer extensions to LPDDR2 to increase bandwidth. Invarious implementations the individual memory devices may be of anynumber of different package types such as single die package (SDP), dualdie package (DDP) or quad die package (Q17P). These devices, in someembodiments, may be directly soldered onto a motherboard to provide alower profile statistic, while in other embodiments the devices areconfigured as one or more memory modules that in turn couple to themotherboard by a given connector. Any number of other memoryimplementations may be used, such as other types of memory modules,e.g., dual inline memory modules (DIMMs) of different varietiesincluding but not limited to microDIMMs or MiniDIMMs. For example, amemory may be sized between 2 GB and 16 GB, and may be configured as aDDR3LM package or an LPDDR2 or LPDDR3 memory, which is soldered onto amotherboard via a ball grid array (BGA).

To provide for persistent storage of information such as data,applications, operating systems and so forth, a mass storage 708 mayalso couple to the processor 702 via the bus 706. To enable a thinnerand lighter system design the mass storage 708 may be implemented via asolid state disk drive (SSDD). Other devices that may be used for themass storage 708 include flash memory cards, such as SD cards, microSDcards, xD picture cards, and the like, and USB flash drives. In lowpower implementations, the mass storage 708 may be on-die memory orregisters associated with the processor 702. However, in some examples,the mass storage 708 may be implemented using a micro hard disk drive(HDD). Further, any number of new technologies may be used for the massstorage 708 in addition to, or instead of, the technologies described,such resistance change memories, phase change memories, holographicmemories, or chemical memories, among others. For example, the IoTsystem 700 may incorporate the 3D XPOINT memories from Intel® andMicron®.

The components may communicate over the bus 706. The bus 706 may includeany number of technologies, including industry standard architecture(ISA), extended ISA (EISA), peripheral component interconnect (PCI),peripheral component interconnect extended (PCIx), PCI express (PCIe),or any number of other technologies. The bus 706 may be a proprietarybus, for example, used in a SoC based system. Other bus systems may beincluded, such as an 12C interface, an SPI interface, point to pointinterfaces, and a power bus, among others.

The bus 706 may couple the processor 702 to a mesh transceiver 710, forcommunications with other mesh devices 712. The mesh transceiver 710 mayuse any number of frequencies and protocols, such as 2.4 gigahertz (GHz)transmissions under the IEEE 802.15.4 standard, using the Bluetooth® lowenergy (BLE) standard, as defined by the Bluetooth® Special InterestGroup, or the ZigBee® standard, among others. Any number of radios,configured for a particular wireless communication protocol, may be usedfor the connections to the mesh devices 712. For example, a WLAN unitmay be used to implement Wi-Fi™ communications in accordance with theInstitute of Electrical and Electronics Engineers (IEEE) 802.11standard. In addition, wireless wide area communications, e.g.,according to a cellular or other wireless wide area protocol, can occurvia a WWAN unit.

The mesh transceiver 710 may communicate using multiple standards orradios for communications at different range. For example, the IoTsystem 700 may communicate with close devices, e.g., within about 10meters, using a local transceiver based on BLE, or another low powerradio, to save power. More distant mesh devices 712, e.g., within about10 meters, may be reached over ZigBee or other intermediate powerradios. Both communications techniques may take place over a singleradio at different power levels, or may take place over separatetransceivers, for example, a local transceiver using BLE and a separatemesh transceiver using ZigBee. The mesh transceiver 710 may beincorporated into an MCU as an address directly accessible by the chip,such as in the Curie® units available from Intel.

An uplink transceiver 714 may be included to communicate with devices inthe cloud 102. The uplink transceiver 714 may be LPWA transceiver thatfollows the IEEE 802.15.4, or IEEE 802.15.4g standards, among others.The IoT system 700 may communicate over a wide area using LoRaWAN™ (LongRange Wide Area Network) developed by Semtech and the LoRa Alliance. Thetechniques described herein are not limited to these technologies, butmay be used with any number of other cloud transceivers that implementlong range, low bandwidth communications, such as Sigfox, and othertechnologies. Further, other communications techniques, such astime-slotted channel hopping, described in IEEE 802.15.4e may be used.

Any number of other radio communications and protocols may be used inaddition to the systems mentioned for the mesh transceiver 710 anduplink transceiver 714, as described herein. For example, the radiotransceivers 710 and 712 may include an LTE or other cellulartransceiver that uses spread spectrum (SPA/SAS) communications forimplementing high speed communications, such as for video transfers.Further, and number of other protocols may be used, such as Wi-Finetworks for medium speed communications, such as still pictures, sensorreadings, and provision of network communications.

The radio transceivers 710 and 712 may include radios that arecompatible with any number of 3GPP (Third Generation PartnershipProject) specifications, notably Long Term Evolution (LTE), Long TermEvolution-Advanced (LTE-A), and Long Term Evolution-Advanced Pro (LTE-APro). It can be noted that radios compatible with any number of otherfixed, mobile, or satellite communication technologies and standards maybe selected. These may include, for example, any Cellular Wide Arearadio communication technology, which may include e.g. a 5th Generation(5G) communication systems, a Global System for Mobile Communications(GSM) radio communication technology, a General Packet Radio Service(GPRS) radio communication technology, or an Enhanced Data Rates for GSMEvolution (EDGE) radio communication technology. Other Third GenerationPartnership Project (3GPP) radio communication technology that may beused includes UMTS (Universal Mobile Telecommunications System), FOMA(Freedom of Multimedia Access), 3GPP LTE (Long Term Evolution), 3GPP LTEAdvanced (Long Term Evolution Advanced), 3GPP LTE Advanced Pro (LongTerm Evolution Advanced Pro)), CDMA2000 (Code division multiple access2000), CDPD (Cellular Digital Packet Data), Mobitex, 3G (ThirdGeneration), CSD (Circuit Switched Data), HSCSD (High-SpeedCircuit-Switched Data), UMTS (3G) (Universal Mobile TelecommunicationsSystem (Third Generation)), W-CDMA (UMTS) (Wideband Code DivisionMultiple Access (Universal Mobile Telecommunications System)), HSPA(High Speed Packet Access), HSDPA (High-Speed Downlink Packet Access),HSUPA (High-Speed Uplink Packet Access), HSPA+(High Speed Packet AccessPlus), UMTS-TDD (Universal Mobile TelecommunicationsSystem-Time-Division Duplex), TD-CDMA (Time Division-Code DivisionMultiple Access), TD-SCDMA (Time Division-Synchronous Code DivisionMultiple Access), 3GPP Rel. 8 (Pre-4G) (3rd Generation PartnershipProject Release 8 (Pre-4th Generation)), 3GPP Rel. 9 (3rd GenerationPartnership Project Release 9), 3GPP Rel. 10 (3rd Generation PartnershipProject Release 10), 3GPP Rel. 11 (3rd Generation Partnership ProjectRelease 11), 3GPP Rel. 12 (3rd Generation Partnership Project Release12), 3GPP Rel. 13 (3rd Generation Partnership Project Release 13), 3GPPRel. 14 (3rd Generation Partnership Project Release 14), 3GPP LTE Extra,LTE Licensed-Assisted Access (LAA), UTRA (UMTS Terrestrial RadioAccess), E-UTRA (Evolved UMTS Terrestrial Radio Access), LTE Advanced(4G) (Long Term Evolution Advanced (4th Generation)), cdmaOne (2G),CDMA2000 (3G) (Code division multiple access 2000 (Third generation)),EV-DO (Evolution-Data Optimized or Evolution-Data Only), AMPS (1G)(Advanced Mobile Phone System (1st Generation)), TACS/ETACS (TotalAccess Communication System/Extended Total Access Communication System),2-AMPS (2G) (Digital AMPS (2nd Generation)), PTT (Push-to-talk), MTS(Mobile Telephone System), IMTS (Improved Mobile Telephone System), AMTS(Advanced Mobile Telephone System), OLT (Norwegian for OffentligLandmobil Telefoni, Public Land Mobile Telephony), MTD (Swedishabbreviation for Mobiltelefonisystem 2, or Mobile telephony system 2),Autotel/PALM (Public Automated Land Mobile), ARP (Finnish forAutoradiopuhelin, “car radio phone”), NMT (Nordic Mobile Telephony),Hicap (High capacity version of NTT (Nippon Telegraph and Telephone)),CDPD (Cellular Digital Packet Data), Mobitex, DataTAC, iDEN (IntegratedDigital Enhanced Network), PDC (Personal Digital Cellular), CSD (CircuitSwitched Data), PHS (Personal Handy-phone System), WiDEN (WidebandIntegrated Digital Enhanced Network), iBurst, Unlicensed Mobile Access(UMA, also referred to as also referred to as 3GPP Generic AccessNetwork, or GAN standard)), Wireless Gigabit Alliance (WiGig) standard,mmWave standards in general (wireless systems operating at 10-90 GHz andabove such as WiGig, IEEE 802.11 ad, IEEE 802.11 ay, and the like. Inadition to the standards listed above, any number of satellite uplinktechnologies may be used for the uplink transceiver 714, including, forexample, radios compliant with standards issued by the ITU(International Telecommunication Union), or the ETSI (EuropeanTelecommunications Standards Institute), among others. The examplesprovided herein are thus understood as being applicable to various othercommunication technologies, both existing and not yet formulated.

A network interface controller (NIC) 716 may be included to provide awired communication to the cloud 102. The wired communication mayprovide an Ethernet connection, or may be based on other types ofnetworks, such as Controller Area Network (CAN), Local InterconnectNetwork (LIN), DeviceNet, ControlNet, Data Highway+, PROFIBUS, orPROFINET, among many others. An additional NIC 716 may be included toallow connect to a second network, for example, a NIC 716 providingcommunications to the cloud over Ethernet, and a second NIC 716providing communications to other devices over another type of network.

The bus 706 may couple the processor 702 to an interface 718 that isused to connect external devices. The external devices may includesensors 720, such as accelerometers, level sensors, flow sensors,temperature sensors, pressure sensors, barometric pressure sensors, andthe like. The interface 718 may be used to connect the IoT system 700 toactuators 722, such as power switches, valve actuators, an audible soundgenerator, a visual warning device, and the like.

While not shown, various input/output (I/O) devices may be presentwithin, or connected to, the IoT system 700. For example, a display maybe included to show information, such as sensor readings or actuatorposition. An input device, such as a touch screen or keypad may beincluded to accept input.

A battery 724 may power the IoT system 700, although in examples inwhich the IoT system 700 is mounted in a fixed location, it may have apower supply coupled to an electrical grid. The battery 724 may be alithium ion battery, a metal-air battery, such as a zinc-air battery, analuminum-air battery, a lithium-air battery, and the like.

A battery monitor/charger 726 may be included in the IoT system 700 totrack the state of charge (SoCh) of the battery 720. The batterymonitor/charger 726 may be used to monitor other parameters of thebattery 724 to provide failure predictions, such as the state of health(SoH) and the state of function (SoF) of the battery 724. The batterymonitor/charger 726 may include a battery monitoring integrated circuit,such as an LTC4020 or an LTC2990 from Linear Technologies, an ADT7488Afrom ON Semiconductor of Phoenix Arizona, or an IC from the UCD90xxxfamily from Texas Instruments of Dallas, TX. The battery monitor/charger726 may communicate the information on the battery 724 to the processor702 over the bus 706. The battery monitor/charger 726 may also includean analog-to-digital (ADC) convertor that allows the processor 702 todirectly monitor the voltage of the battery 726 or the current flow fromthe battery 724. The battery parameters may be used to determine actionsthat the IoT system 700 may perform, such as transmission frequency,mesh network operation, sensing frequency, and the like.

A power block 728, or other power supply coupled to a grid, may becoupled with the battery monitor/charger 726 to charge the battery 724.In some examples, the power block 728 may be replaced with a wirelesspower receiver to obtain the power wirelessly, for example, through aloop antenna in the IoT system 700. A wireless battery charging circuit,such as an LTC4020 chip from Linear Technologies of Milpitas, CA, amongothers, may be included in the battery monitor/charger 726. The specificcharging circuits chosen depend on the size of the battery 724, andthus, the current required. The charging may be performed using theAirfuel standard promulgated by the Airfuel Alliance, the Qi wirelesscharging standard promulgated by the Wireless Power Consortium, theRezence charging standard, promulgated by the Alliance for WirelessPower, among others.

The mass storage 708 may include a number of modules to implement therapid IoT prototyping functions described herein. Although shown as codeblocks in the mass storage 708, it may be understood that any of themodules may be replaced with hardwired circuits, for example, built intoan application specific integrated circuit (ASIC). The mass storage 708may include an automation framework 730, an IoT database 732, end pointsensor simulators 734, and a control user interface 736. The automationframework 730 runs the simulation by passing simulated events generatedby the end point sensor simulators 734 to a simulated IoT network. Theautomation framework 734 populates a tuple in the IoT database 732 witha characterization of the simulation. The control user interface 736 isused to define the architectural specifications of simulated IoTnetwork, and to define the simulated workload to be processed in thesimulation.

Additionally or alternatively, the mass storage 708 may include a numberof modules to implement IoT future proofing functions described herein.The mass storage 708 may include an automation framework 730, an IoTdatabase 732, end point sensor simulators 734, and a control userinterface 736. The automation framework 730 runs the simulation bypassing simulated events generated by the end point sensor simulators734 to a simulated IoT network. The automation framework 734 populates atuple in the IoT database 732 with a characterization of the simulation.The control user interface 736 may be used to define the architecturalspecifications of simulated IoT network, and to define the simulatedworkload to be processed in the simulation.

Furthermore, components such as the gateway and various sensors orservers, may be real, virtual, or simulated. Indeed, the representationsdescribed with respect to FIG. 7 may be real or simulated with respectto their depiction and in evaluation, including in any hybrid operationof the live real IoT components with simulated or emulated components.

FIG. 8 is a block diagram of a non-transitory, machine readable medium800 including code to direct a processor to perform rapid prototyping inan IoT system. The processor 802 may access the non-transitory, machinereadable medium 800 over a bus 804. The processor 802 and bus 804 may beas described with respect to FIG. 7 . The non-transitory, machinereadable medium 800 may include devices described for a mass storage,such as optical disks, thumb drives, or any number of other hardwaredevices, also as described with respect to FIG. 7 . The non-transitory,machine readable medium 800 may include code 806 to direct the processor802 to identify a real-world workload, code 808 to convertcharacteristics of the real-world workload to endpoint simulatorworkloads, code 810 to generate an event model, and code 812 to simulateprocessing the endpoint simulator workloads. Furthermore, componentssuch as the gateway and various sensors or servers, may be real,virtual, or simulated. Indeed, the representations described withrespect to FIG. 5 may be real or simulated with respect to theirdepiction and in evaluation, including in any hybrid operation of thelive real IoT components with simulated or emulated components.

FIG. 9 is a non-transitory, machine readable medium 900 including codeto direct a processor 902 to future proof the IoT system. The processor902 may access the non-transitory, machine readable medium 900 over abus 904. The processor 902 and bus 904 may be as described with respectto FIG. 7 . The non-transitory, machine readable medium 900 may includedevices described for the mass storage 708 of FIG. 7 or may includeoptical disks, thumb drives, or any number of other hardware devices.

The non-transitory, machine readable medium 900 may include code 906 todirect the processor 902 to generate a workflow as described herein. Themedium 900 may also include code 908 to generate a simulated IoTnetwork, code 910 to generate an event model, and code 912 to futureproof the generated workflow. Furthermore, components such as thegateway and various sensors or servers, may be real, virtual, orsimulated. Indeed, the representations described with respect to FIG. 9may be real or simulated with respect to their depiction and inevaluation, including in any hybrid operation of the live real IoTcomponents with simulated or emulated components.

Examples are given. Example 1 includes a method of determining headroomfor applications includes generating a workflow by modifying areal-world workflow to incorporate a future expectation for theworkload, generating a simulated Internet of things (IoT) network forfuture proofing the workload and a configuration for a simulated gatewayof the simulated IoT network, generating an event model for an IoTnetwork based on the future proofing workflow, and future proofing theworkload and the configuration by simulating an execution of theworkflow on the simulated IoT network.

Example 2 includes the method of example 1, wherein future proofing theworkload and the configuration includes generating a model of futureapplications, and simulating an execution of the workflow on thesimulated IoT network using the model of future applications.

Example 3 includes the method of examples 1 or 2, wherein the futureexpectation includes future target workflows.

Example 4 includes the method of examples 1 or 2, including determiningan implication of a future workflow by analyzing statisticcharacteristics of the simulated execution.

Example 5 includes the method of example 1, including predictingnon-linear solution characteristics triggered by varying inputparameters.

Example 6 includes a system for future proofing IoT networks including acontrol user interface to define a simulated Internet of things (IoT)network associated with a real IoT network, a plurality of sensorsimulators to generate events for a future proof workload, and anautomation framework to future proof the real IoT network by simulatingprocessing of the future proof workload in the simulated IoT network.

Example 7 includes the system of example 6, wherein future proofing theworkload and the configuration includes generating a model of futureapplications, and simulating an execution of the workflow on thesimulated IoT network using the model of future applications.

Example 8 includes the system of examples 6 or 7, wherein the futureexpectation includes future target workflows.

Example 9 includes the system of examples 6 or 7, wherein the automationframework is to determine an implication of a future workflow byanalyzing statistic characteristics of the simulated execution.

Example 10 includes the system of examples 6 or 7, wherein theautomation framework is to predict non-linear solution characteristicstriggered by varying input parameters.

Example 11 includes a tangible, non-transitory, computer-readable mediumincluding code executable by a processor to direct the processor togenerate a workflow by modifying a real-world workflow to incorporate afuture expectation for the workload, generate a simulated Internet ofthings (IoT) network for future proofing the workload and aconfiguration for a simulated gateway of the simulated IoT network,generate an event model for an IoT network based on the future proofingworkflow, and future proof the workload and the configuration bysimulating an execution of the workflow on the simulated IoT network.

Example 12 includes the medium of example 11. In some examples, theworkload and the configuration are future proofed by generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 13 includes the medium of examples 11 or 12, wherein the futureexpectation includes future target workflows.

Example 14 includes the medium of examples 11 or 12, including codeexecutable by the processor to determine an implication of a futureworkflow by analyzing statistic characteristics of the simulatedexecution.

Example 15 includes the medium of examples 11 or 12, including codeexecutable by the processor to predict non-linear solutioncharacteristics triggered by varying input parameters.

Example 16 includes an apparatus for representing events that occur in areal world deployment includes means for identifying a real-worldworkload including a plurality of the events, means for converting aplurality of characteristics of the real-world workload into a pluralityof endpoint simulator workloads, means for converting a plurality ofgateway hardware characteristics into a plurality of modeling elementsfor a plurality of simulated Internet of things (IoT) networks, meansfor performing a simulation for each of the endpoint simulator workloadson each of the simulated IoT networks, means for collecting statisticsabout the performed simulation of the simulated IoT networks for theendpoint simulator workloads, means for generating a workflow bymodifying the real-world workload to incorporate a future expectationfor the real-world workload, means for generating a simulated IoTnetwork for future proofing the workload and a configuration for asimulated gateway of the simulated IoT network, means for generating anevent model for the simulated IoT network based on the future proofingworkflow, and means for future proofing the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 17 includes the apparatus of example 16 including means forcharacterizing a performance of the simulated IoT networks for theendpoint simulator workloads.

Example 18 includes the apparatus of examples 16 or 17, including meansfor modifying a sensed value of an event in the endpoint simulatorworkload via a user interface.

Example 19 includes the apparatus of examples 16 or 17, including meansfor generating events that trigger multiple simultaneous triggers.

Example 20 includes the apparatus of examples 16 or 17, including meansfor deterministically simulating multiple triggers.

Example 21 includes the apparatus of examples 16 or 17, including meansfor deterministically evaluating statistics from simultaneous variationsof multiple triggers.

Example 22 includes the apparatus of example 16, including means fordetermining the statistics for the simulation. In some examples, thesimulation is performed in short durations.

Example 23 includes the apparatus of example 16, including means foradaptively eliminating workloads and gateway metrics that do not have animpact on the statistics.

Example 24 includes the apparatus of example 16, including means forperforming the simulations in parallel what-if analysis runs.

Example 25 includes the apparatus of example 24, including means fordynamically coordinating results from executed modules to determineexecute sequences.

Example 26 includes a method of determining headroom for applicationsincludes generating a workflow by modifying a real-world workflow toincorporate a future expectation for the workload, generating asimulated Internet of things (IoT) network for future proofing theworkload and a configuration for a simulated gateway of the simulatedIoT network, generating an event model for an IoT network based on thefuture proofing workflow, and future proofing the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 27 includes the method of example 26. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 28 includes the method of example 26. In some examples, thefuture expectation includes future target workflows.

Example 29 includes the method of example 26, including determining animplication of a future workflow by analyzing statistic characteristicsof the simulated execution.

Example 30 includes the method of example 26, including predictingnon-linear solution characteristics triggered by varying inputparameters.

Example 31 includes a system for future proofing IoT networks includinga control user interface to define a simulated Internet of things (IoT)network associated with a real IoT network, a plurality of sensorsimulators to generate events for a future proof workload, and anautomation framework to future proof the real IoT network by simulatingprocessing of the future proof workload in the simulated IoT network.

Example 32 includes the system of example 31. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 33 includes the system of example 31. In some examples, thefuture expectation includes future target workflows.

Example 34 includes the system of example 31. In some examples, theautomation framework is to determine an implication of a future workflowby analyzing statistic characteristics of the simulated execution.

Example 35 includes the system of example 31. In some examples, theautomation framework is to predict non-linear solution characteristicstriggered by varying input parameters.

36. A tangible, non-transitory, computer-readable medium including codeexecutable by a processor to direct the processor to generate a workflowby modifying a real-world workflow to incorporate a future expectationfor the workload, generate a simulated Internet of things (IoT) networkfor future proofing the workload and a configuration for a simulatedgateway of the simulated IoT network, generate an event model for an IoTnetwork based on the future proofing workflow, and future proof theworkload and the configuration by simulating an execution of theworkflow on the simulated IoT network.

Example 37 includes the medium of example 36. In some examples, theworkload and the configuration are future proofed by generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 38 includes the medium of example 36. In some examples, thefuture expectation includes future target workflows.

Example 39 includes the medium of example 36, including code executableby the processor to determine an implication of a future workflow byanalyzing statistic characteristics of the simulated execution.

Example 40 includes the medium of example 36, including code executableby the processor to predict non-linear solution characteristicstriggered by varying input parameters.

Example 41 includes a method of representing events that occur in a realworld deployment includes identifying a real-world workload including aplurality of the events, converting a plurality of characteristics ofthe real-world workload into a plurality of endpoint simulatorworkloads, converting a plurality of gateway hardware characteristicsinto a plurality of modeling elements for a plurality of simulatedInternet of things (IoT) networks, performing a simulation for each ofthe endpoint simulator workloads on each of the simulated IoT networks,collecting statistics about the performed simulation of the simulatedIoT networks for the endpoint simulator workloads, generating a workflowby modifying the real-world workload to incorporate a future expectationfor the real-world workload, generating a simulated IoT network forfuture proofing the workload and a configuration for a simulated gatewayof the simulated IoT network, generating an event model for thesimulated IoT network based on the future proofing workflow, and futureproofing the workload and the configuration by simulating an executionof the workflow on the simulated IoT network.

Example 42 includes the method of example 41, including characterizing aperformance of the simulated IoT networks for the endpoint simulatorworkloads.

Example 43 includes the method of example 42, including modifying asensed value of an event in the endpoint simulator workload via a userinterface.

Example 44 includes the method of example 41, further includinggenerating events that trigger multiple simultaneous triggers.

Example 45 includes the method of example 41, further includingdeterministically simulating multiple triggers.

Example 46 includes the method of example 41, includingdeterministically evaluating statistics from simultaneous variations ofmultiple triggers.

Example 47 includes the method of example 41, including determining thestatistics for the simulation. In some examples, the simulation isperformed in short durations.

Example 48 includes the method of example 41, including adaptivelyeliminating workloads and gateway metrics that do not have an impact onthe statistics.

Example 49 includes the method of example 41, including performing thesimulations in parallel what-if analysis runs.

Example 50 includes the method of example 49, including dynamicallycoordinating results from executed modules to determine executesequences.

Example 51 includes a method of determining headroom for applicationsincludes generating a workflow by modifying a real-world workflow toincorporate a future expectation for the workload, generating asimulated Internet of things (IoT) network for future proofing theworkload and a configuration for a simulated gateway of the simulatedIoT network, generating an event model for an IoT network based on thefuture proofing workflow, and future proofing the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 52 includes the method of example 51. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 53 includes the method of examples 51 or 52, wherein the futureexpectation includes future target workflows.

Example 54 includes the method of examples 51 or 52, includingdetermining an implication of a future workflow by analyzing statisticcharacteristics of the simulated execution.

Example 55 includes the method of examples 51 or 52, includingpredicting non-linear solution characteristics triggered by varyinginput parameters.

Example 56 includes a system for future proofing IoT networks includinga control user interface to define a simulated Internet of things (IoT)network associated with a real IoT network, a plurality of sensorsimulators to generate events for a future proof workload, and anautomation framework to future proof the real IoT network by simulatingprocessing of the future proof workload in the simulated IoT network.

Example 57 includes the system of example 56. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 58 includes the system of examples 56 or 57, wherein the futureexpectation includes future target workflows.

Example 59 includes the system of examples 56 or 57, wherein theautomation framework is to determine an implication of a future workflowby analyzing statistic characteristics of the simulated execution.

Example 60 includes the system of examples 56 or 57, wherein theautomation framework is to predict non-linear solution characteristicstriggered by varying input parameters.

Example 61 includes a system for representing events that occur in areal world deployment includes a control user interface to define asimulated Internet of things (IoT) network associated with a real IoTnetwork, a plurality of sensor simulators to generate events for afuture proof workload, and an automation framework to future proof thereal IoT network by simulating processing of the future proof workloadin the simulated IoT network, wherein the automation frameworkidentifies a real-world workload including a plurality of the events,converts a plurality of characteristics of the real-world workload intoa plurality of endpoint simulator workloads, converts a plurality ofgateway hardware characteristics into a plurality of modeling elementsfor a plurality of simulated Internet of things (IoT) networks, performsa simulation for each of the endpoint simulator workloads on each of thesimulated IoT networks, collects statistics about the performedsimulation of the simulated IoT networks for the endpoint simulatorworkloads, generates a workflow by modifying the real-world workload toincorporate a future expectation for the real-world workload, generatesa simulated IoT network for future proofs the workload and aconfiguration for a simulated gateway of the simulated IoT network,generates an event model for the simulated IoT network based on thefuture proofs workflow, and future proofs the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 62 includes the system of example 61. In some examples, theautomation framework characterizes a performance of the simulated IoTnetworks for the endpoint simulator workloads.

Example 63 includes the system of examples 61 or 62, wherein theautomation framework modifies a sensed value of an event in the endpointsimulator workload via a user interface.

Example 64 includes the system of examples 61 or 62, wherein theautomation framework generates events that trigger multiple simultaneoustriggers.

Example 65 includes the system of examples 61 or 62, wherein theautomation framework deterministically simulates multiple triggers.

Example 66 includes a method of representing events that occur in a realworld deployment includes identifying a real-world workload including aplurality of the events, converting a plurality of characteristics ofthe real-world workload into a plurality of endpoint simulatorworkloads, converting a plurality of gateway hardware characteristicsinto a plurality of modeling elements for a plurality of simulatedInternet of things (IoT) networks, performing a simulation for each ofthe endpoint simulator workloads on each of the simulated IoT networks,collecting statistics about the performed simulation of the simulatedIoT networks for the endpoint simulator workloads, generating a workflowby modifying the real-world workload to incorporate a future expectationfor the real-world workload, generating a simulated IoT network forfuture proofing the workload and a configuration for a simulated gatewayof the simulated IoT network, generating an event model for thesimulated IoT network based on the future proofing workflow, and futureproofing the workload and the configuration by simulating an executionof the workflow on the simulated IoT network.

Example 67 includes the method of example 66 including characterizing aperformance of the simulated IoT networks for the endpoint simulatorworkloads.

Example 68 includes the method of examples 66 or 67, including modifyinga sensed value of an event in the endpoint simulator workload via a userinterface.

Example 69 includes the method of examples 66 or 67, further includinggenerating events that trigger multiple simultaneous triggers.

Example 70 includes the method of examples 66 or 67, further includingdeterministically simulating multiple triggers.

Example 71 includes the method of example 66, includingdeterministically evaluating statistics from simultaneous variations ofmultiple triggers.

Example 72 includes the method of example 66, including determining thestatistics for the simulation. In some examples, the simulation isperformed in short durations.

Example 73 includes the method of example 66, including adaptivelyeliminating workloads and gateway metrics that do not have an impact onthe statistics.

Example 74 includes the method of example 66, including performing thesimulations in parallel what-if analysis runs.

Example 75 includes the method of example 74, including dynamicallycoordinating results from executed modules to determine executesequences.

Example 76 includes a method of determining headroom for applicationsincludes generating a workflow by modifying a real-world workflow toincorporate a future expectation for the workload, generating asimulated Internet of things (IoT) network for future proofing theworkload and a configuration for a simulated gateway of the simulatedIoT network, generating an event model for an IoT network based on thefuture proofing workflow, and future proofing the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 77 includes the method of example 76. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 78 includes the method of examples 76 or 77, wherein the futureexpectation includes future target workflows.

Example 79 includes the method of examples 76 through 78, includingdetermining an implication of a future workflow by analyzing statisticcharacteristics of the simulated execution.

Example 80 includes the method of example 76, including predictingnon-linear solution characteristics triggered by varying inputparameters.

Example 81 includes a system for future proofing IoT networks includinga control user interface to define a simulated Internet of things (IoT)network associated with a real IoT network, a plurality of sensorsimulators to generate events for a future proof workload, and anautomation framework to future proof the real IoT network by simulatingprocessing of the future proof workload in the simulated IoT network.

Example 82 includes the system of example 81. In some examples, futureproofing the workload and the configuration includes generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 83 includes the system of examples 81 or 82, wherein the futureexpectation includes future target workflows.

Example 84 includes the system of examples 81 through 83, wherein theautomation framework is to determine an implication of a future workflowby analyzing statistic characteristics of the simulated execution.

Example 85 includes the system of examples 81 or 82, wherein theautomation framework is to predict non-linear solution characteristicstriggered by varying input parameters.

Example 86 includes a tangible, non-transitory, computer-readable mediumincluding code executable by a processor to direct the processor togenerate a workflow by modifying a real-world workflow to incorporate afuture expectation for the workload, generate a simulated Internet ofthings (IoT) network for future proofing the workload and aconfiguration for a simulated gateway of the simulated IoT network,generate an event model for an IoT network based on the future proofingworkflow, and future proof the workload and the configuration bysimulating an execution of the workflow on the simulated IoT network.

Example 87 includes the medium of example 86. In some examples, theworkload and the configuration are future proofed by generating a modelof future applications, and simulating an execution of the workflow onthe simulated IoT network using the model of future applications.

Example 88 includes the medium of examples 86 or 87, wherein the futureexpectation includes future target workflows.

Example 89 includes an apparatus for representing events that occur in areal world deployment includes means for identifying a real-worldworkload including a plurality of the events, means for converting aplurality of characteristics of the real-world workload into a pluralityof endpoint simulator workloads, means for converting a plurality ofgateway hardware characteristics into a plurality of modeling elementsfor a plurality of simulated Internet of things (IoT) networks, meansfor performing a simulation for each of the endpoint simulator workloadson each of the simulated IoT networks, means for collecting statisticsabout the performed simulation of the simulated IoT networks for theendpoint simulator workloads, means for generating a workflow bymodifying the real-world workload to incorporate a future expectationfor the real-world workload, means for generating a simulated IoTnetwork for future proofing the workload and a configuration for asimulated gateway of the simulated IoT network, means for generating anevent model for the simulated IoT network based on the future proofingworkflow, and means for future proofing the workload and theconfiguration by simulating an execution of the workflow on thesimulated IoT network.

Example 90 includes the apparatus of example 89 including means forcharacterizing a performance of the simulated IoT networks for theendpoint simulator workloads.

EXAMPLES OF CODE

The following are only examples and not intended to limit the presenttechniques. There may be multiple files which run on a device accordingto the role of the device (client, gateway, or server). In the followingexample, the code determines solution characteristics for a given set ofinput workflow parameters and gateway characteristics.

The following code examples include one set of code sections thatperforms future proofing of IoT networks, and one set of code sectionsthat perform rapid prototyping of IoT networks. Future proofing isidentifying an architecture that meets the SLA conditions of a potentialfuture workflow. In an example of future proofing, Code Sections 1-4determine gateway characteristics that accommodate a given set of inputworkflow parameters, and expected solution characteristics. Theseworkflow parameters are the set of parameters that a current deploymentcould use sometime in the future. The expected solution characteristicsmay be expectations of what a future IoT network architecture mayinclude.

# Find optimal gateway config for a given set of workflow and solutionparameters. # ML equation: Gi = Wi + Si # Based on the input workflowparameters and expected solution characteristics, # calculate gatewaycharacteristics needed for that solution outcome using  MachineLearning. import numpy as np import statsmodels.api as sm import xlrdimport pandas as pd import math import time import os CODE SECTION 1

Code Section 2 performs linear regressions. There are severalindependent parameters that will influence a given dependent parameterand the relationship may be a non-linear relationship. In examples, theapplication of Code Section 2 to edge devices provides for thedetermination of solution parameters, gateway configuration, publishingcharacteristics and such to determine an efficient configuration.

#Function to run multiple linear regression def reg_m(y, x):  ones =np.ones(len(x[0]))  x = np.array(x).T  x = sm.add_constant(x)  #LinearRegression  results = sm.OLS(endog=y, exog=x).fit( )  print “\n===================================== \n”  print (“The coefficients  are: ”, results.params)  print (“The STD errors are : ”, results.bse) print (“The scale is: ”, results.scale)  print (“The std_error(sqrt(scale)) is: ”, math.sqrt(results.scale))  print “\n===================================== \n”  #print results.summary( ) return results CODE SECTION 2

It is noted that Code Section 3 determines gateway characteristics.However, this is merely one example of an architecture element that maybe determined. Examples may also, or alternatively, determine thecharacteristics of other elements of an IoT network architecture.

#Function for Gateway Characteristics calculation def gw_calc(data,const, sensor, pub, burst, std_err):  # Create global list of predictedGW CPU values that can be used to    predict required future GWArchitecture.  global Pred_GW_array = [ ]  GW_counter = 0  for arr indata:   #calculate predicted GW CPU Freq   pred_gw_freq = const +(arr[0] * sensor) + (arr[1] * pub) +   (arr[2] * burst)   print(“Calculated GW_CPU_Freq is: ”, pred_gw_freq)  Pred_GW_array[GW_counter] = pred_gw_freq   GW_counter += 1  returnprint “Learning in progress...” CODE SECTION 3 #Read Workflow andSolution data from Excel sheet. workbook =xlrd.open_workbook(‘ProfiledData.xlsx’) worksheet =workbook.sheet_by_name(‘Solution’) num_cols = worksheet.ncols 1 #Createan array to store all the cols. Sensor_array = [ ] Publish_array = [ ]Burst_array = [ ] CPU_array = [ ] S_array = [ ] P_array = [ ] B_array =[ ] A_array = [ ] #Add each column to an array. S_array +=worksheet.col(0) P_array += worksheet.col(1) B_array += worksheet.col(2)A_array += worksheet.col(3) for S in S_array: Sensor_array.append(S.value) for P in P_array: Publish_array.append(P.value) for B in B_array: Burst_array.append(B.value) for A in A_array: CPU_array.append(A.value) #Create Predictor array and independentvariables. y = CPU_array x = [Sensor_array, Publish_array, Burst_array]#Run regression on the input data. results = reg_m(y, x) #Capture thecoefficients. Reg_const = results.params[0] Reg_sensor =results.params[1] Reg_pub = results.params[2] Reg_burst =results.params[3] #Document required Solution and Workflowcharacteristics #Read Workflow and Solution data from Excel sheet.workbook = xlrd.open_workbook(‘FutureData.xlsx’) worksheet =workbook.sheet_by_name(‘Solution’) num_cols = worksheet.ncols 1 #Createan array to store all the cols. Sensor_array = [ ] Publish_array = [ ]Burst_array = [ ] S_array = [ ] P_array = [ ] B_array = [ ] #Add eachcolumn to an array. S_array += worksheet.col(0) P_array +=worksheet.col(1) B_array += worksheet.col(2) for S in S_array: Sensor_array.append(S.value) for P in P_array: Publish_array.append(P.value) for B in B_array: Burst_array.append(B.value) # Create input to ML equation. # List ofLists, with each nested list having a value from each category test_arr= list(zip(Sensor_array, Publish_array, Burst_array)) # CalculateGateway characteristic. gw_calc(test_arr, Reg_const, Reg_sensor,Reg_pub, Reg_burst,  math.sqrt(results.scale)) CODE SECTION 4

In the following example, the Code Sections 5-9 perform rapidprototyping of IoT networks. Specifically, the solution characteristicsfor a given set of workflow and gateway parameters are estimated.

# Find estimated solution characteristics for a given set of workflowand  gateway parameters. # ML equation: Si = Wi + Gi # Based on theinput workflow parameters and gateway characteristics # calculatesolution characteristics using Machine Learning import numpy as npimport statsmodels.api as sm import xlrd import pandas as pd import mathimport time import os #Function to run multiple linear regression defreg_m(y, x):  ones = np.ones(len(x[0]))  x = np.array(x). T  x =sm.add_constant(x)  #Linear Regression  results = sm.OLS(endog=y,exog=x).fit( )  print “\n ===================================== \n” print (“The coefficients  are : ”, results.params)  print (“The STDerrors are : ”, results.bse)  print (“The scale is: ”, results.scale) print (“The std_error (sqrt(scale)) is: ”, math.sqrt(results.scale)) print “\n ===================================== \n”  #printresults.summary( )  return results CODE SECTION 5

Code Section 6 shows CPU prediction as one example of how determinationscan be done. Similar approaches may be used to make determinations withregard to memory, storage, bandwidth, software, and any other element ofan architecture.

#Function for Solution Characteristics (CPU_Total) calculation defSoln_calc(data, const, sensor, pub, burst, std_err):  for arr in data:  #calculate predicted Solution CPU   pred_soln_cpu = const + (arr[0] *sensor) + (arr[1] * pub) +   (arr[2] * burst)   print (“CalculatedCPU_Total is: ”, pred_soln_cpu)  return print “Learning in progress...”CODE SECTION 6 #Read Workflow and Gateway profile data from Excel sheet.workbook = xlrd.open_workbook(‘RegressionData.xlsx’) worksheet =workbook.sheet_by_name(‘Test’) num_cols = worksheet.ncols 1 #Create anarray to store all the cols. Sensor_array = [ ] Publish_array = [ ]Burst_array = [ ] Act_CPU_array = [ ] S_array = [ ] P_array = [ ]B_array = [ ] A_array = [ ] #Add each column to an array. S_array +=worksheet.col(0) P_array += worksheet.col(1) B_array += worksheet.col(2)A_array += worksheet.col(3) for S in S_array: Sensor_array.append(S.value) for P in P_array: Publish_array.append(P.value) for B in B_array: Burst_array.append(B.value) for A in A_array: Act_CPU_array.append(A.value) #Create Predictor array and independentvariables. y = Act_CPU_array x = [Sensor_array, Publish_array,Burst_array] CODE SECTION 7

Code Section 8 represents a regression run. The outputs of theregression runs are the predictors for the parameters of interest. Theseresultant parameters are the solution characteristics as observable in adeployment.

#Run regression on the input data. results = reg_m(y, x) #Capture thecoefficients. Reg_const = results.params[0] Reg_sensor =results.params[1] Reg_pub = results.params[2] Reg_burst =results.params[3] CODE SECTION 8

Code Section 9 detects the actual workflow. This is accomplished usingprofilers that detect parameter values such as publish rates, payload,header characteristics, CPU, memory usage etc.

#Detect workflow coming in to gateway. globalcount,g_avg_pub_freq,g_aprx_pub_freq,g_avg_burst_count,pub_msg count =(count%10) + 1 for i in range(len(time_list)1):   time2 =time_list[i+1].split(“ ”)[0]   time1 = time_list[i].split(“ ”)[0]  exec_time = float((datetime.datetime.strptime(time2, FMT)    datetime.datetime.strptime(time1, FMT))total_seconds( ))   exec_time*= 1000   exec_time_list.append(exec_time) os.system(“clear”) cmd =“netstat lantp | grep E ‘mosquitto.*ESTABLISHED|ESTABLISHED.*mosquitto’|  grep -v ‘127.0.0.1’ |wc l” proc=Popen(cmd,shell=True,stdout=PIPE, )num_sensor=int(proc.communicate( )[0]) 1 avg_burst_count =sum(burst_count)/len(burst_count) if (g_avg_burst_count == 0):  g_avg_burst_count = avg_burst_count else:  g_avg_burst_count =g_avg_burst_count + ( float(avg_burst_count    g_avg_burst_count) /count) avg_pub_freq = sum(interval_list)/len(interval_list) if(g_avg_pub_freq == 0):   g_avg_pub_freq = avg_pub_freq else:  g_avg_pub_freq = g_avg_pub_freq + ( float(avg_pub_freq g_avg_pub_freq)/   count) print “Number of sensors: ”,num_sensor print “Avg publishinterval: ”+ str(g_avg_pub_freq)+“ seconds” print “Avg Burst Count:”+str(g_avg_burst_count) cpu_usage = psutil.cpu_times_percent( ).userprint “CPU Usage: ”+str(cpu_usage) data_string =str(num_sensor)+‘,’+str(int(round(g_avg_pub_freq)))+‘,’+str(int(round(g_avg_burst_coun  t)))+‘,’+str(int(cpu_usage)) array = [ ]array.append(data_string.strip( ).split(‘,’)) test_arr = [map(int, x)for x in array] #Calculate Solution characteristic. Soln_calc(test_arr,Reg_const, Reg_sensor, Reg_pub, Reg_burst,   math.sqrt(results.scale))CODE SECTION 9

What is claimed is:
 1. At least one machine readable storage medium withinstructions stored thereon, the instructions executable by a machine tocause the machine to: provide a user interface to receive user input todefine a plurality of Internet of Things (IoT) device models to simulatea corresponding plurality of IoT devices in a system, wherein theplurality of IoT devices comprise a plurality of different device types,and respective IoT device models in the plurality of IoT device modelsdefine: respective event data to be generated by a correspondingsimulated IoT device; a destination for the event data to be generatedby the corresponding simulated IoT device, wherein the destinationcorresponds to another entity in the system; and an activity level ofthe corresponding simulated IoT device, wherein the activity levelidentifies how often the event data is sent by the correspondingsimulated IoT device; generate a simulation of the system, wherein thesimulation comprises the plurality of IoT device models, wherein thesimulation is executed in a distributed computing system, wherein theIoT device models generate respective event data in the simulation; andmonitor performance of the simulation of the system.
 2. The storagemedium of claim 1, wherein the user interface is to receive user inputto define interactions between a corresponding plurality of simulatedIoT devices in the simulation.
 3. The storage medium of claim 1, whereinthe simulation comprises at least one real IoT device to interact withthe IoT device models in the simulation.
 4. The storage medium of claim1, wherein the performance monitored in the simulation comprises systemcapacity.
 5. The storage medium of claim 1, wherein the simulation is toaccess fault recovery for the system.
 6. The storage medium of claim 1,wherein the plurality of different device types comprises a gatewaydevice type.
 7. The storage medium of claim 1, wherein the plurality ofdifferent device types comprises a cloud resource type.
 8. The storagemedium of claim 1, wherein the simulation simulates a road environmentcomprising vehicles, and the plurality of IoT device models comprise asensor model to model sensors of one of the vehicles.
 9. The storagemedium of claim 1, wherein the instructions are further executable tocause the machine to modify the simulation.
 10. The storage medium ofclaim 9, wherein the solution is modified to modify one of the IoTdevice models used in the simulation.
 11. The storage medium of claim 1,wherein the simulation utilizes merge queueing telemetry transport(MQTT) messages to communicate between the plurality of IoT devicemodels in the simulation.
 12. The storage medium of claim 1, wherein theplurality of different device types comprises at least one environmentalsensor device type.
 13. A method comprising: providing a user interfaceto receive user input to define a plurality of Internet of Things (IoT)device models to simulate a corresponding plurality of IoT devices in asystem, wherein the plurality of IoT devices comprise a plurality ofdifferent device types, the plurality of different device types compriseat least one environmental sensor device type, and respective IoT devicemodels in the plurality of IoT device models define: respective eventdata to be generated by a corresponding simulated IoT device; adestination for the event data to be generated by the correspondingsimulated IoT device, wherein the destination corresponds to anotherentity in the system; and an activity level of the correspondingsimulated IoT device, wherein the activity level identifies how oftenthe event data is sent by the corresponding simulated IoT device;generating a simulation of the system, wherein the simulation comprisesthe plurality of IoT device models, wherein the simulation is executedin a distributed computing system, wherein the IoT device modelsgenerate respective event data in the simulation; and monitoringperformance of the simulation of the system.
 14. The method of claim 13,wherein the user interface is to receive user input to defineinteractions between a corresponding plurality of simulated IoT devicesin the simulation.
 15. The method of claim 13, wherein the simulationcomprises at least one real IoT device to interact with the IoT devicemodels in the simulation.
 16. The method of claim 13, further comprisingmodifying the simulation by modifying one of the IoT device models usedin the solution.
 17. The method of claim 13, wherein the plurality ofdifferent device types comprises at least one of an endpoint devicetype, a gateway type, a cloud resources type, and a vehicle sensor type.18. The method of claim 13, wherein the simulation utilizes mergequeueing telemetry transport (MQTT) messages to communicate between theplurality of IoT device models in the simulation.
 19. A systemcomprising: means for providing a user interface to receive user inputto define a plurality of Internet of Things (IoT) device models tosimulate a corresponding plurality of IoT devices in a system, whereinthe plurality of IoT devices comprise a plurality of different devicetypes, the plurality of different device types comprise at least oneenvironmental sensor device type, and respective IoT device models inthe plurality of IoT device models define: respective event data to begenerated by a corresponding simulated IoT device; a destination for theevent data to be generated by the corresponding simulated IoT device,wherein the destination corresponds to another entity in the system; andan activity level of the corresponding simulated IoT device, wherein theactivity level identifies how often the event data is sent by thecorresponding simulated IoT device; means for generating a simulation ofthe system, wherein the simulation comprises the plurality of IoT devicemodels, wherein the simulation is executed in a distributed computingsystem, wherein the IoT device models generate respective event data inthe simulation; and means for monitoring performance of the simulationof the system.
 20. A system comprises: a processor; a memory; and aplurality of nodes, wherein at least one of the plurality of nodes isto: provide a user interface to receive user input to define a pluralityof Internet of Things (IoT) device models to simulate a correspondingplurality of IoT devices in a system, wherein the plurality of IoTdevices comprise a plurality of different device types, and respectiveIoT device models in the plurality of IoT device models define:respective event data to be generated by a corresponding simulated IoTdevice; a destination for the event data to be generated by thecorresponding simulated IoT device, wherein the destination correspondsto another entity in the system; and an activity level of thecorresponding simulated IoT device, wherein the activity levelidentifies how often the event data is sent by the correspondingsimulated IoT device; generate a simulation of the system, wherein thesimulation comprises the plurality of IoT device models, wherein thesimulation is executed in a distributed computing system, wherein theIoT device models generate respective event data in the simulation; andmonitor performance of the simulation of the system.
 21. The system ofclaim 20, wherein the distributed computing system comprises a pluralityof edge computing devices.
 22. The system of claim 20, furthercomprising the distributed computing system.
 23. The system of claim 20,wherein the plurality of different device types comprises at least oneof an endpoint device type, a gateway type, a cloud resources type, anda vehicle sensor type.
 24. The system of claim 20, wherein thesimulation utilizes merge queueing telemetry transport (MQTT) messagesto communicate between the plurality of IoT device models in thesimulation.
 25. The system of claim 20, wherein the simulation comprisesat least one real IoT device to interact with the IoT device models inthe simulation.